#include <vector>

#include "dexvec.h"

using namespace std;

class DexMat {
    vector<DexVec> vecs;
    public:
        DexMat() : vecs() {}
        DexVec& operator[](int i);
        const DexVec& operator[](int i) const;
        size_t size() const;

        struct VecComp {
            bool operator()(const DexVec& a, const DexVec& b) const;
        };

        void init(int rows);

        void sortVecs();

        void addVec(const vector<Lit>& vec);

        void resize(size_t size);

};

void saveDexMat(const std::string& filename, const DexMat& mat);
void loadDexMat(const std::string& filename, DexMat& mat);